大家好,我是 Ian,因為一些原因,我在年初的時候接觸到嵌入式系統開發與系統軟體實作。在這一年來也寫了許多文章記錄學習歷程,希望這篇系列文可以激起讀者對 CS 的興趣 : )
2022/08/25:
本作品已改編為『EN 帶你寫個作業系統:來趟 RISC-V 開發輕旅行』並且以實體書的方式出版,如果覺得這個系列文寫得不錯,可以考慮購買實體書翻閱喔!
在 2020 年底,隨著推甄告一段落,閒來無事的我看到了一個有趣的東西:由金門大學資工系陳鍾誠教授開源的作業系統專案: mini risc-v os 以及麻省理工學院開發的 xv6 os。
在嘗試閱讀專案原始程式碼時,我發現自己對計算機科學領域的認知與 C 語言程式能力都有嚴重的不足。
Jserv 也曾說過本科生的定義:
不要強調自己「非本科」,在這個世紀只要沒強度都是非本科。
我想,這世界上最可怕的事情莫過於知道自己的不足卻坐以待斃。
就算自己在大學時並不是正資工系也不能作為逃避的藉口,因此我買了幾本書並參考大量文獻,在空閒時研讀、整理成筆記,實踐 Teach Yourself Computer Science 的精神。
本系列文名為計算機科學之美,所以它包含了非常廣大的領域,主要應該包含了:
gdb
, Makefile
, gcc
, vim
, git
等。其中,作業系統是一門綜合性的 CS 學科。我想,比起直接閱讀,修讀過資料結構與演算法和計算機概論、計算機組織後再來研讀會有更深的感觸。
本系列文會圍繞在 RISC-V 上建構,介紹導讀作業系統原始程式碼所需要的工具、 RISC-V ISA 介紹、作業系統原始程式碼導讀,在介紹 RISC-V 以及計算機組織的相關知識時也會用到 rv32emu 的原始程式碼方便解說。
目標讀者需要有以下條件:
本系列文採取先理論後實作的策略,先補足計算機科學的基本知識,再探討作業系統設計並嘗試研讀開源專案的原始程式碼。
學習 System programming 以及 Operation system 之前,我們需要對計算機有更進一步的認知:
RISC-V 是由 UC Berkeley 發展的 ISA,其官方規格書僅有 200 多頁的長度,相比 ARM 以及 MIPS,是更容易學習的 ISA,本系列文將利用 RISC-V 讓讀者對計算機組織有更深入的暸解。
受到微中子的拯救資工系學生的基本素養影響,我也整理了一些文章來教大家資工人必須要會的基本工具/技巧。
以自幹作業系統為目標,學習作業系統的導論並閱讀作業系統的專案原始程式碼理解實作原理。
之前修讀學校開的作業系統時,因為作業要求,用了 Node.js 寫一個非常基礎的多執行緒程式,筆者自認為沒有真正的搞懂多執行緒。
剛好藉由這次機會,可以學習多執行緒的同步問題以及使用 POSIX Thread 開發多執行緒程式。
<(_ _)>
文章相關問題或勘誤歡迎留言或是發信到我的信箱: ychen.desl@gmail.com
。
Jserv的教學內容真的很優, 從新認知自己的不足找到資工系存在的意義((很多軟體工作重複性很高,會讓人迷惘
同意,希望我有天也能寫出這麼有深度的教學文章 XD